package cn.centec.bid.entity;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 标准 - 采购发布参数
 *
 * 调用：采购系统 > 采购中心
 *
 * @author 延晓磊
 * @since 2022年11月03日
 */
@Data
public class StandardPurchaseStartParam {

    // 采购编号
    private String id;
    // 采购名称
    private String name;
    // 采购企业ID
    private Long orgId;
    // 采购方式：0公开，1邀标，2竞争性谈判，3询价，4单一
    private String buyType;
    // 合同类型：合同类型：1年度框架协议，2长期合同，3单批次合同
    private String contractType;
    // 服务类型：1物资采购，2工程采购，3服务采购
    private String serviceType;
    // 物资类型名称
    private String materialType;
    // 报价开始时间
    private LocalDateTime startTime;
    // 报价结束时间
    private LocalDateTime endTime;
    // 描述【NULL】
    private String description;
    // 附件【NULL】
    private String fileUrl;
    // 是否允许部分报价：1是0否
    private String isPart;
    // 是否为寻源：1是0否
    private String isSource;
    // 采购员【NULL】
    private String purchaseUser;
    // 采购员电话【NULL】
    private String purchasePhone;
    // 技术/联系人【NULL】
    private String contactUser;
    // 技术/联系电话【NULL】
    private String contactPhone;
    // 商务联系人【NULL】
    private String businessUser;
    // 商务联系电话【NULL】
    private String businessPhone;
    // 付款方式【NULL】
    private String paymentMethod;
    // 供应商限制类型：0全平台，1指定供应商
    private String limitSupplier;

    // 偏离信息【NULL】
    private List<Deviate> deviateList;
    // 物资项
    private List<Material> materialList;
    // 指定供应商【NULL】
    private List<Long> supplierList;
    // 指定关联合同（框架协议合同编号，顺序与supplierList对应）【NULL】
    private List<String> contractList;

    /**
     * 偏离信息
     *
     * @author 延晓磊
     * @since 2022年11月03日
     */
    @Data
    public static class Deviate {

        // ID
        private String id;
        // 偏离名称
        private String name;
        // 偏离描述
        private String description;
    }

    /**
     * 物资项
     *
     * @author 延晓磊
     * @since 2022年11月03日
     */
    @Data
    public static class Material {

        // ID
        private String id;
        // 物资编码【NULL】
        private String code;
        // 物资名称
        private String name;
        // 数量
        private BigDecimal num;
        // 计量单位
        private String unit;
        // 品牌/制造商【NULL】
        private String brand;
        // 规格型号【NULL】
        private String model;
        // 备注【NULL】
        private String remarks;
    }


}
